import "../dao/dao_user_album_media_record.dart";
import "../model/model_user_album_media_record.dart";

class ServiceUserAlbumMediaRecord {
  static void saveRight(ModelUserAlbumMediaRecord r) {
    // 1. 查询已有
    ModelUserAlbumMediaRecord? tmpR =
        DaoUserAlbumMediaRecord.findByAlbumAndMediaAndSentence(r.albumId, r.mediaId, r.sentenceId);

    // 2. 有 属于复习 更新复习信息
    if (tmpR != null) {
      if (tmpR.status == -1) {
        // 更新复习进度
        tmpR.status = 0;
        tmpR.startReviewTime = DateTime.now().millisecondsSinceEpoch;
        tmpR.reviewProgress = 0;
        tmpR.lastReviewTime = DateTime.now().millisecondsSinceEpoch;
      } else if (tmpR.status == 0) {
        // 更新复习进度
        tmpR.reviewProgress = tmpR.calcReviewProgress();
        tmpR.lastReviewTime = DateTime.now().millisecondsSinceEpoch;
      }
      tmpR.rightQty++;
      DaoUserAlbumMediaRecord.updateById(tmpR);
    }
    // 3. 无 表示第一次就正确，不需要复习 保存新内容
    else {
      r.status = 1;
      r.rightQty = 1;
      DaoUserAlbumMediaRecord.insert(r);
    }
  }

  static void saveWrong(ModelUserAlbumMediaRecord r) {
    // 1. 查询是否有该记录
    ModelUserAlbumMediaRecord? tmpR =
        DaoUserAlbumMediaRecord.findByAlbumAndMediaAndSentence(r.albumId, r.mediaId, r.sentenceId);

    // 2. 有 属于复习 重置复习信息
    if (tmpR != null) {
      // 修改tmpR信息
      tmpR.status = -1;
      tmpR.startReviewTime = -1;
      tmpR.lastReviewTime = -1;
      tmpR.reviewProgress = -1;
      tmpR.wrongQty++;
      DaoUserAlbumMediaRecord.updateById(tmpR);
    }
    // 3. 无
    else {
      r.status = -1;
      r.startReviewTime = -1;
      r.lastReviewTime = -1;
      r.reviewProgress = -1;
      r.wrongQty = 1;
      DaoUserAlbumMediaRecord.insert(r);
    }
  }

  static void saveIgnore(ModelUserAlbumMediaRecord r) {
    // 1. 查询是否有该记录
    ModelUserAlbumMediaRecord? tmpR =
        DaoUserAlbumMediaRecord.findByAlbumAndMediaAndSentence(r.albumId, r.mediaId, r.sentenceId);

    // 2. 有 属于复习 重置复习信息
    if (tmpR != null) {
      // 修改tmpR信息
      tmpR.status = -2;
      tmpR.startReviewTime = -1;
      tmpR.lastReviewTime = -1;
      tmpR.reviewProgress = -1;
      tmpR.wrongQty = 0;
      DaoUserAlbumMediaRecord.updateById(tmpR);
    }
    // 3. 无
    else {
      r.status = -2;
      r.startReviewTime = -1;
      r.lastReviewTime = -1;
      r.reviewProgress = -1;
      r.wrongQty = 0;
      DaoUserAlbumMediaRecord.insert(r);
    }
  }
}
